// 新建一个 封装 axios 模块
// 利用 axios.create 创建一个自定义的axios 来使用
import axios from 'axios'
import { useRouter } from 'vue-router'

import { useUserStore } from '@/stores/user'
// 目前理解 应该是只有index.js文件的时候，才能'@/stores/'
// 错误提示 element 中导包 使用错误提示提示框
import { ElMessage } from 'element-plus'
import router from '@/router'
const baseURL = 'http://localhost:8080/'
console.log(baseURL)
const route = useRouter()
// 刚开始只是一个框架 后面还要自己往里面去填内容

const instance = axios.create({
  //ToDo a.基础地址，超时时间
  // 基础地址
  baseURL,
  // 超时时间 十秒
  timeout: 10000
})

// 请求拦截器
instance.interceptors.request.use(
  (config) => {
    console.log(config)
    //     //ToDO 2,携带token
    //     // 因为用不到this 所以不会受组件范围影响 所以可以在Pinia仓库里面的组件调用 导就可以
    //     // 在哪里需要用 就在哪里调
    // const useStore = useUserStore()
    //     // 判断当前的token是否存在
    // if (useStore.token) {
    //   //       // 如果存在 就往请求头上面去携带  找接口文档  在官网找到 接口文档地址 chttps://apifox.com/apidoc/shared-26c67aee-0233-4d23-aab7-08448fdf95ff/api-93850049
    // config.headers.Authorization == useStore.token
    // }
    if(config.url == '/login/loginn'){
      console.log(config);
      
      return config
    } else {
      const Authorization = localStorage.getItem('token')
      config.headers['role'] = 'web'
      config.headers['token'] = Authorization
      return config
    }
    
  },
  (err) => Promise.reject(err)
)

// 响应拦截器
instance.interceptors.response.use(
  (res) => {
    console.log(res)
    if(res.data === 500){
      router.push('/')
      return
    }
    //     //TODO 4.摘取核心响应数据
    // if (res.data.code === 0) {
    //   return res
    // }
    //     //TODO 3. 处理业务失败
    //     // 业务处理失败，给错误提示 抛出错误   注意res.data是一个整体
    // ElMessage.error(res.data.message || '服务异常')
    return res
  },
  (err) => {
    //     // 错误的特殊情况 =>401权限不是或 token 过期 =>拦截到登录
    if (err.response?.status === 401) {
      // router.push('/login')
    }
    //     // 错误的默认情况 ->只要给提示
    //     //TODO 5 处理401错误
    //     // 此处401就是直接给提示
    // ElMessage.error(err.response.data.message || '服务异常')

    // return Promise.reject(err)
  }
)

// 默认导出
export default instance
// // 按需导出
export { baseURL }
